package com.zhj.structure.linear.utils;

/**
 * 一个节点
 * @PackageName:com.zhj.structure.utils
 * @ClassName:Node
 * @auter: 朱慧杰
 * @date:2020/8/8 0008 15:02
 **/
public class DoubleLoopNode {

    // 节点内容
    private int data;
    // 上一个节点
    private DoubleLoopNode pre = this;
    // 下一个节点
    private DoubleLoopNode next = this;

    public DoubleLoopNode(int data) {
        this.data = data;
    }

    public void insertAfter(DoubleLoopNode node) {
        // 取出下一个节点
        DoubleLoopNode nextNext = this.next;
        // 下一个节点变为传来的新节点
        this.next = node;
        // 新节点的上一个节点变为当前节点
        node.pre = this;
        // 当前的下一个下一个变为原来的下一个
        this.next.next = nextNext;
        // 原来的下一个的上一个变为新加进来的节点
        nextNext.pre = node;
    }

    public void removeNext() {
        DoubleLoopNode newNext = this.next.next;
        if(this.next.next == null) {
            this.next = null;
        }
        this.next = newNext;
    }

    // 获取下一个节点
    public DoubleLoopNode next() {
        return this.next;
    }

    // 获取上一个节点
    public DoubleLoopNode pre() {
        return this.pre;
    }

    // 获取数据
    public int getData() {
        return this.data;
    }

}
